﻿/////////////////Map/////////////////////////////////////////////////////////////////////////////////////////////
function Load() { 
    loadMap();
    addMakerOnClick();      
}

// su kien Onload của trang sửa trạm
function load_SuaTram() {
    isPageAdmin = true;
    isUpdate = true;
    string_ListCombo = "combo_IDTram";
    Load();
    getAllStation();
}

function load_TuyenXe() {
    isPageAdmin = true;
    isRoute = true;
    isDetail = true;
    Load();      
    getAllStation();
    _getBusRoutes();
}
function load_TimKiem() {
    isPageAdmin = true;
    isRoute = true;     
    Load();
    getAllStation();
    _getBusRoutes();
}
// sự kiện Onload của trạm chi tiết đường đi giữa hai trạm
function load_ChiTietGiuaHaiTram() {
    isPageAdmin = true;
    isDetail = true;
    string_ListCombo = "combo_TramBatDau";
    Load();
    getAllStation();
}

// sự kiện Load của trang Thêm trạm
function load_ThemTram() {
    isPageAdmin = true;
    string_ListCombo = "";
    Load();
    getAllStation();

}
function addAndRemove() {
    removeRouteExist();
    for (i = 0; i < arrayStationToStation.length; ++i) {
        map.addOverlay(arrayStationToStation[i]);
    }
}
//Load tất cả những phần cần thiết chung của tất cả các trang
function loadMap() {
    if (VBrowserIsCompatible()) {
        map = new VMap(document.getElementById('container'));
        map.setCenter(pointCenter, zoomLevel);
        VEvent.addListener(map, 'zoomend', function () {
            //xet trường hợp  nếu ZoomLevel > =13 thì hiện tất cả các trạm xe buýt hiện hành, nếu không thì ẩn lại
           // addAndRemove();
            if (map.getLevel() >= zoomLevel) {
                //neu zoom level hien tai cua ban do lon hon hoac bang zoom level thi hien tat ca cac tram xe buyt nguoc laij thi an di
                var lengthArrayMarker = arrayMarker.length;
                for (m = 0; m < lengthArrayMarker; ++m) {
                    arrayMarker[m].show();
                }

            }
            else {

             
                    var lengthArrayMarker = arrayMarker.length;
                    for (l = 0; l < lengthArrayMarker; ++l) {
                        arrayMarker[l].hide();
                    }

              
            }
        });
    }
}

// chuyển đổi từ toạ độ sang địa chỉ thực tế
function convertLatLngtoAddress(lat, lng) {
    var latlng = new google.maps.LatLng(lat, lng);
    geocoder.geocode({ 'latLng': latlng }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (results[1]) {
                return (results[1].formatted_address);
            } else {
                return "No results found";
            }
        } else {
            alert("Geocoder failed due to: " + status);
        }
    });
}

//format strLatLng: "Latitude,Longitude"  \
/*
thêm vào map một trạm xe buýt và add event click cho nó nếu bạn click 2 lần liên tiếp,
khoản thời gian giữa 2 lần click <= 1giay(giống như double click) thì remove trạm đó
nếu lớn hơn >1 thì dc xem là 2 sự kiện click hiện ra thông tin toạ độ của trạm đó 
*/
function addOneMaker(ID,marker) {
    if (VBrowserIsCompatible()) {
        //alert(marker);
        map.setCenter(marker.getPoint(), map.getLevel());
        map.addOverlay(marker);
        if (map.getLevel() >= zoomLevel)
            marker.show();
        else
            marker.hide();
        map.closeInfoWindow();
        VEvent.addListener(marker, 'click', function (obj, latlng) {
            ++isdbClick; // if you click double click on icon then isClick=2, every you click, the time lost to you click be 1second            
            if (isDetail == true) {
                _getWayStationToOtherStation(ID); // when you click to station, we show way staion which you can go to orther station 
            }
            if (isPageAdmin == true) {
                map.openInfoWindow(marker.getPoint(), "ID Trạm:" + ID + "(" + marker.getPoint() + ")");
            }
        });

    }
}

/*
add event click cho map, khi bạn click vào map thì sẽ hiện toạ độ tại điểm mà bạn click vào hỏi bạn có muốn thêm một trạm xe buýt tại đó không
*/
function addMakerOnClick() {
    if (VBrowserIsCompatible()) {
        ///add event click on lap,when you click, it will show alert Latitude and Longtidue
        VEvent.addListener(map, 'click', function (overlay, latlng) {
            var strLatLng = latlng;
            var strHTML = "<div align='center'>Bạn đã click tại điểm có toạ độ (" + strLatLng + ")"
                          + "</div>";
            map.openInfoWindow(latlng, strHTML);

        });
    }
}

//Draw 1 line to point start and point end with struct poic{Latitude,Longitude} 
function drawLine(pointStart, pointEnd,color) {

    var polyline = new VPolyline([pointStart, pointEnd], color, 2, color, 2);
    arrayStationToStation.push(polyline);
     map.addOverlay(polyline);
}

// Ve đường đi từ 1 trạm tơi một trạm
//tham số đầu vào là một chuỗi gồm Lat,lng;Lat,lng
function drawWay(arrayWay,color) {
    var lengthWay = arrayWay.length;
    if (lengthWay > 0) {
        if (isRoute == true) {//trường hợp nếu vẽ là tuyến xe buýt thì có cần phải duy chuyển tới ddiemr bắt đầu của tuyến và thông báo cho người dùng bít bạn chọn điểm bắt đầu của tuyến
           
            var arrayStart = arrayWay[0].split(',');
            var __pointStart = new VLatLng(arrayStart[0], arrayStart[1]);
            map.setCenter(__pointStart,17);
            map.openInfoWindow(__pointStart, "Trạm bắt đầu của tuyến bạn vừa chọn");
        }
        for (w = 0; w < lengthWay - 1; ++w) {
            var arrayStart = arrayWay[w].split(',');
            var arrayEnd = arrayWay[w + 1].split(',');
            var pointStart = new VLatLng(arrayStart[0], arrayStart[1]);
            var pointEnd = new VLatLng(arrayEnd[0], arrayEnd[1]);
            drawLine(pointStart, pointEnd,color);
        }
    }
}
//remove một marker hiện tại và add vào bản đồ một maker khác thông qua toạ độ
/*function removeMarkerExist(ID,positionMarkerOld, positionMarkerNew) {
    if (positionMarkerNew != positionMarkerOld) {
        var lengthArray = arrayMarker.length;
        for (i = 0; i < lengthArray; ++i) {
            if (arrayMarker[i].getPoint() == positionMarkerOld) {
                arrayMarker[i].remove();
                arrayMarker.splice(i, 1);
                var marker = new VMarker(positionMarkerNew, new VIcon("Images/bus.png", new VSize(16, 16)));
                addOneMaker(ID, marker);
                arrayMarker.push(marker);
                return;
            }
        }
    }
   
}*/